"""
自定义缓存装饰器
"""
from django.core.cache import caches


def _cache_dec(**cacheargs):
    def cache_dec(func):
        def wrapper(request,*args,**kwargs):
            """
            cacheargs:装饰器参数
            func:被装饰的方法
            request,args,kwargs:方法的参数
            """
            # 1.先到缓存中确认是否有数据
            # key设计：gd1 gd2 gd3
            key = cacheargs.get("key_prefix") + str(kwargs.get("sku_id"))
            resp = caches[cacheargs.get("cache")].get(key)
            if resp:
                # 直接从缓存中获取去数据，返回结束
                return resp
            else:
                # 缓存中没有则走视图
                view_resp = func(request,*args,**kwargs)
                # 设置到缓存中
                caches[cacheargs.get("cache")].set(key,view_resp,
                                                   cacheargs.get("expire"))


            return func(request,*args,**kwargs)
        return wrapper
    return cache_dec